﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Business_Logic;
using Business_Entity;

namespace PetSoft.GUI.Seguridad
{
    public partial class GUIMantUsuario : Form
    {
    	private Boolean esNuevo;
    	private Boolean seEdita;
		private int codEmpleado;
		private int codCliente;
		private Boolean esCliente;
		
        public GUIMantUsuario(Boolean esNuevo)
        {
        	this.esNuevo = esNuevo;
        	this.seEdita = false;
        	
        	InitializeComponent();
        	this.esCliente = false;
        	this.codigoEmpTB.Enabled = false;
        	this.NombresTB.Enabled = false;
        	this.usuarioTBX.Enabled = false;
        	this.pwdTBX.Enabled = false;
           	this.generarBTN.Enabled = true;
           	//this.buscarRolBTN.Enabled = false;
           	this.rolTBX.Enabled = false;
           	
           	this.usuarioTBX.KeyPress+=new KeyPressEventHandler(Utils.ParaUsuarioTB);
           	this.nombreTB.KeyPress+=new KeyPressEventHandler(Utils.NoCaracteresRarosTB);
           	this.apPaternoTB.KeyPress+=new KeyPressEventHandler(Utils.NoCaracteresRarosTB);
           	this.apMaternoTB.KeyPress+=new KeyPressEventHandler(Utils.NoCaracteresRarosTB);
           	
           	
        }
        
        public GUIMantUsuario(Boolean esNuevo, Boolean esCliente)
        {
        	this.esNuevo = esNuevo;
        	this.seEdita = false;
        	this.esCliente = true;
        	InitializeComponent();
        	
        	this.codigoEmpTB.Enabled = false;
        	this.NombresTB.Enabled = false;
        	this.usuarioTBX.Enabled = false;
        	this.pwdTBX.Enabled = false;
           	this.generarBTN.Enabled = false;
           	this.buscarRolBTN.Enabled = false;
           	
           	this.nombreTB.Enabled = false;
           	this.apPaternoTB.Enabled = false;
           	this.apMaternoTB.Enabled = false;
           	
			this.rolTBX.Enabled = false;
			
			if (esCliente)
				this.rolTBX.Text = "WEB";
        }
        
        public GUIMantUsuario(Boolean seEdita, int codigo, Boolean esCliente)
        {
        	this.esNuevo = false;
        	this.seEdita = seEdita;
        	this.codCliente = codCliente;
        	this.esCliente = esCliente;
        	InitializeComponent();
        	
        	BLUsuario blUsuario = new BLUsuario();
        	
        	
        	this.codigoEmpTB.Text = codigo.ToString();
        	
        	
        	if (esCliente){
        		
	        	this.NombresTB.Text = blUsuario.getNombreCliente(codigo);
    	    	this.usuarioTBX.Text = blUsuario.getUsernameCliente(codigo);
    	    	this.rolTBX.Enabled = false;
    	    	this.buscarBTN.Enabled = false;
    	    	this.rolTBX.Text = "WEB";
           		this.nombreTB.Enabled = false;
           		this.apPaternoTB.Enabled = false;
           		this.apMaternoTB.Enabled = false;
        	}
        	else{
        		
        		this.NombresTB.Text = blUsuario.getNombre(codigo);
    	    	this.usuarioTBX.Text = blUsuario.getUsername(codigo);
    	    	this.nombreTB.Enabled = false;
           		this.apPaternoTB.Enabled = false;
           		this.apMaternoTB.Enabled = false;
        	}
        	
        	
        	this.NombresTB.Enabled = false;
            this.codigoEmpTB.Enabled = false;
        	this.buscarEmpleadoBTN.Enabled = false;
        	this.generarBTN.Enabled = false;
        	this.usuarioTBX.Enabled = false;
        	this.pwdTBX.Enabled = false;
        	
        	
        	
        	if (!seEdita)
        		this.buscarRolBTN.Enabled = false;
        	
        	if(esCliente){
        		this.buscarBTN.Visible = false;
        		this.rolTBX.Text="WEB";
        		this.buscarRolBTN.Enabled = false;
        	}
        		
        	
        }

        private void BuscarEmpleadoBTN_Click(object sender, EventArgs e)
        {
            
        }
        
        void Label5Click(object sender, EventArgs e)
        {
        	
        }
        
        void Button1Click(object sender, EventArgs e)
        {
        	if (esNuevo)
			{
        		if (Utils.MessagePregunta("¿Está seguro que desea guardar el nuevo registro?"))
        		{
        			if(esCliente){
        				BLUsuario blUsuario = new BLUsuario();
       				
        				if (blUsuario.registraUsuarioCliente(this.usuarioTBX.Text, this.pwdTBX.Text, this.rolTBX.Text, int.Parse(this.codigoEmpTB.Text))){
        			   		Utils.MessageAviso("Nuevo usuario registrado exitosamente");
        				}
        				else
        					Utils.MessageError("Error al guardar nuevo usuario");
        				this.Close();
        			}
        			else {

	  					BLUsuario blUsuario = new BLUsuario();
	  					
	  					if(this.usuarioTBX.Text=="")
	  						Utils.MessageAviso("Por favor genere un usuario antes de proceder con la transaccion");
	  					else if (this.rolTBX.Text =="")
	  						Utils.MessageAviso("Por favor seleccione un rol antes de proceder con la transaccion");
	  						
	  					else{
       				
        					if (blUsuario.registraUsuario(this.usuarioTBX.Text, this.pwdTBX.Text, this.rolTBX.Text, this.codEmpleado, this.nombreTB.Text, this.apPaternoTB.Text, this.apMaternoTB.Text)){
        			   			Utils.MessageAviso("Nuevo usuario registrado exitosamente");
        					}
        					else
        						Utils.MessageError("Error al guardar nuevo usuario");
        					this.Close();
	  					}
        			}
        		}
			}
        	else if (Utils.MessagePregunta("¿Está seguro que desea guardar los cambios?"))
			{
        		if (!this.rolTBX.Text.Equals("")){
        				
        				BLUsuario blUsuario = new BLUsuario();
        				
        				if (blUsuario.modificaUsuario(this.codEmpleado,this.rolTBX.Text)){
        				    	Utils.MessageAviso("Los cambios se realizaron exitosamente");
        				}
        				else
        					Utils.MessageAviso("Error al guardar los cambios");
        		}
        		else
        			Utils.MessageError("Introduzca un Rol");
        		this.Close();
			}
        }
        
        void Button2Click(object sender, EventArgs e)
        {
        	this.Close();
        }
        
        void Button4Click(object sender, EventArgs e)
        {
        	GUIBuscarRoles buscarRol = new GUIBuscarRoles(false);
        	buscarRol.ShowDialog(this);
        	this.rolTBX.Text = buscarRol.RolSel.Rol;
        }
        
     
        
        void BuscarEmpleadoBTNClick(object sender, EventArgs e)
        {
        	if (this.esCliente){
        		try{
        			Ventas.GUIMantenimientoCliente cliente = new Ventas.GUIMantenimientoCliente(true);
        	
        			cliente.ShowDialog(this);
        	
        			BLUsuario blUsuario = new BLUsuario();
        			//Utils.MessageAviso(buscaEmp.Empleado.IdEmpleado.ToString());
        			
        			if((Boolean)blUsuario.existeUsuarioCliente(cliente.ClienteSeleccionado.IdCliente)){
        				this.codigoEmpTB.Text = cliente.ClienteSeleccionado.IdCliente.ToString();
        				this.NombresTB.Text =cliente.ClienteSeleccionado.Nombre+" "+
        									 cliente.ClienteSeleccionado.ApellidoPaterno+" "+
        									 cliente.ClienteSeleccionado.ApellidoMaterno;
        				
        				//this.codEmpleado = int.Parse(this.codigoEmpTB.Text);
        			
           				this.generarBTN.Enabled = true;
           				this.buscarRolBTN.Enabled = false;
           				this.rolTBX.Enabled = false;
           				this.rolTBX.Text = "WEB";
           				
           				this.nombreTB.Text = cliente.ClienteSeleccionado.Nombre;
           				this.apPaternoTB.Text = cliente.ClienteSeleccionado.ApellidoPaterno;
           				this.apMaternoTB.Text = cliente.ClienteSeleccionado.ApellidoMaterno;
           				
           				
           				
        			}
        			else
        				Utils.MessageAviso("El cliente seleccionado ya tiene registrado un usuario. Por favor verificar");
        			
        			
        			
        			
        			
        		}
        		catch {
        			//Utils.MessageError("Error al obterner el empleado seleccionado");
        		}
        	}
        	else {
        			RRHH.GUIBuscarEmpleado buscaEmp = new RRHH.GUIBuscarEmpleado();
        	
        			buscaEmp.ShowDialog(this);
        			BLUsuario blUsuario = new BLUsuario();
        			
        			try{
        				BEEmpleado empleado = buscaEmp.Empleado;
        				
        				if( Convert.ToBoolean(blUsuario.existeUsuario(empleado.IdEmpleado))){
        					this.codigoEmpTB.Text = buscaEmp.Empleado.IdEmpleado.ToString();
        					this.NombresTB.Text = blUsuario.getNombre(int.Parse(this.codigoEmpTB.Text));
        				
        					this.codEmpleado = int.Parse(this.codigoEmpTB.Text);
        			
           					this.generarBTN.Enabled = true;
           					this.buscarRolBTN.Enabled = true;
           				
           					this.nombreTB.Text = buscaEmp.Empleado.Nombre;
           					this.apPaternoTB.Text = buscaEmp.Empleado.ApPaterno;
           					this.apMaternoTB.Text = buscaEmp.Empleado.ApMaterno;
           				
           					this.nombreTB.Enabled = false;
           					this.apPaternoTB.Enabled = false;
           					this.apMaternoTB.Enabled = false;
           				
        				}
        				else
        					Utils.MessageAviso("El empleado seleccionado ya tiene registrado un usuario. Por favor verificar");
        				}
        			catch {
        				
        			}
        			this.usuarioTBX.Text = "";
        			this.pwdTBX.Text = "";
        	}
        }
        
        
        public void GenerarBTNClick(object sender, EventArgs e)
        {
        	BLUsuario blUsuario = new BLUsuario();
        	
        	if(this.esNuevo){
        		if (this.esCliente){
        			this.usuarioTBX.Text = blUsuario.generaUsuarioCliente(int.Parse(this.codigoEmpTB.Text));
        			this.pwdTBX.Text = this.usuarioTBX.Text;
        			Utils.MessageAviso(this.usuarioTBX.Text);
        			this.rolTBX.Text = "WEB";
        			this.buscarRolBTN.Enabled = false;
        		}
        		else {
        			if(this.codigoEmpTB.Text==""){
        				if ((this.nombreTB.Text=="")&&(this.apPaternoTB.Text=="")&&(this.apMaternoTB.Text=="")){
        					Utils.MessageAviso("Ingrese Nombres, Apellido Paterno y Apellido Materno.");        					
        				} else {        					
        					this.usuarioTBX.Text = blUsuario.generaUsuario(this.nombreTB.Text,this.apPaternoTB.Text, this.apMaternoTB.Text);
        					this.pwdTBX.Text = this.usuarioTBX.Text;
        				}
        				
        			} else {
        				
        				this.usuarioTBX.Text = blUsuario.generaUsuario(int.Parse(this.codigoEmpTB.Text));
        				this.pwdTBX.Text = this.usuarioTBX.Text;
        				Utils.MessageAviso(this.usuarioTBX.Text);                         
        				//this.usuarioTBX.Text = blUsuario.generaUsuario(string nombreTB.Text, string apPaternoTB.Text);
        			}
        		}
        	}
        	else Utils.MessageAviso("No es nuevo");
        	
        }
    }
}
